home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / magic / d / magiccoo.d < prev    next >
Text File  |  1997-10-26  |  7KB  |  129 lines

  1. (*----------------------------------------------------------------------*
  2.  *                                                                      *
  3.  *         MAGIC   Modula's  All purpose  GEM  Interface  Cadre         *
  4.  *                 ÿ         ÿ            ÿ    ÿ          ÿ             *
  5.  *----------------------------------------------------------------------*
  6.  * Version 3.30  02.02.1992     (C)90/91/92 by Peter Hellinger Software *
  7.  *----------------------------------------------------------------------*
  8.  *            Dieses Modul ist urheberrechtlich geschtzt.              *
  9.  *                                                                      *
  10.  * Die Ver”ffentlichung des Quelltextes oder Teilen daraus in schrift-  *
  11.  * licher Form, insbesondere in Zeitschriften, sowie die Verbreitung    *
  12.  * ber Public-Domain-H„ndler bedarf der ausdrcklichen schriftlichen   *
  13.  * Genehmigung des Autors!                                              *
  14.  *                                                                      *
  15.  * Der Autor gibt hiermit die ausdrckliche Erlaubnis, das Modul jeder- *
  16.  * zeit auch im Quelltext weiterzugegeben, sofern dessen Text und ins-  *
  17.  * besondere dieser Urheberrechts-Vermerk nicht ver„ndert wird, und     *
  18.  * durch die Weitergabe kein finanzieller Nutzen entsteht. Der Autor    *
  19.  * beh„lt sich das Recht vor, diese Erlaubnis jederzeit u. ohne Angaben *
  20.  * von Grnden zu widerrufen.                                           *
  21.  *----------------------------------------------------------------------*)
  22.  
  23. (*----------------------------------------------------------------------*
  24.  * MagicCookie  Zugriff auf den Cookiejar                               *
  25.  *                                                                      *
  26.  * Cookies sind, „hnlich XBRA im System global zug„ngliche Variablen.   *
  27.  * Sie bestehen jeweils aus einem Namen (4 Byte, m”glichst ein lesbarer *
  28.  * Text) und einem 32Bit-Wert. Sie werden vom Betriebssystem (ab TOS-   *
  29.  * Version 1.06 oder von residenten Programmen eingetragen.             *
  30.  *                                                                      *
  31.  * Sie dienen dazu, eine statische Schnittstelle zu anderen Programmen  *
  32.  * herzustellen. Wenn beispielsweise ein residentes Programm (im AUTO-  *
  33.  * Ordner) einen Cookie anlegt, dessen Wert ein Zeiger auf einen eige-  *
  34.  * nen Datenbereich ist, k”nnen andere Programme sp„ter diesen Cookie   *
  35.  * finden und auf die Daten des residenten Programms zugreifen. Atari   *
  36.  * hat ausserdem einige Cookies definiert, die den Rechner und die      *
  37.  * Hardware beschreiben.                                                *
  38.  *                                                                      *
  39.  * VORSICHT: Wenn Sie selbst eigene Cookies eintragen wollen, mssen    *
  40.  * Sie einiges mehr an Wissen darber haben (z.B. Atari STE TOS Release *
  41.  * Notes vom 12.1.90). Vor allem sollten Sie Cookies nur in residenten  *
  42.  * Programmen erzeugen, jedoch _NIEMALS_ in Accessories oder Applika-   *
  43.  * tionen.  Die hier vorgestellten Routinen implementieren deshalb auch *
  44.  * nur Abfragemethoden fr Cookies!  Fr diejenigen, die diese Thema    *
  45.  * weiter interessiert sind dem Magic-Paket die Cookiejar-Routinen (C-  *
  46.  * Quellcode) von Arnd Beissner beigefgt.                              * 
  47.  *----------------------------------------------------------------------*)
  48.  
  49. DEFINITION MODULE MagicCookie;
  50.  
  51. FROM MagicSys   IMPORT  Nil, Null, Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, Bit6,
  52.                         Bit7, Bit8, Bit9, Bit10, Bit11, Bit12, Bit13, Bit14,
  53.                         Bit15, LOC, Byte, ByteSet, sWORD, sINTEGER, sCARDINAL,
  54.                         sBITSET, lINTEGER, lCARDINAL, lWORD, lBITSET;
  55.  
  56.  
  57.  
  58.  
  59.  
  60. FROM SYSTEM IMPORT BYTE;
  61.  
  62. (* Von Atari vordefinierte Cookies, die den Rechner beschreiben. *)
  63.  
  64. CONST   CPU =           '_CPU'; (* Hauptprozessor: 0, 10, 20, 30 usw. *)
  65.         FPU =           '_FPU'; (* Mathe-Koprozessor: 0, 1, 2 im 1. Word *)
  66.         Machine =       '_MCH'; (* Rechner; 1. Word: 0=ST, 1=STE, 2=TT *)
  67.         Video =         '_VDO'; (* Video-Hardware; 1. Word: 0=ST, 1=STE, 2=TT *)
  68.         Sound =         '_SND'; (* Bits im Longword: 0: GI/Yamaha(ST), 1: DMA(TT) *)
  69.         Switches =      '_SWI'; (* BIOS-interne Konfigurationswerte *)
  70.         FastReadBuff =  '_FRB'; (* Adresse des 64KB-Puffers f. Disk-Treiber im TT *)
  71.         LaserPrinter =  '_SLM'; (* Wird vom Diablo-Treiber (ab Version 1.4) gesetzt. *)
  72.         STeFix =        '_INF'; (* Fix fr den Desktop.Inf-Bug im Desktop des STE. *)
  73.         DosFlock =      '_FLK'; (* GEMDOS verfgt ber Record-Locking *)
  74.         Network =       '_NET'; (* Typ des verwendeten Netzwerks *)
  75.         Poolfix =       '_OOL'; (* Poolfix 3 von Atari Corp *)
  76.         HdDisk =        '_FDC'; (* Laufwerk-Konfiguration ab TOS 2.06
  77.                                  * im 1. Word  0 =  DD-Laufwerke (720/360kB)
  78.                                  *             1 =  HD-Laufwerke (1.44MB)
  79.                                  *             2 =  ED-Laufwerke (2.88MB)
  80.                                  *)
  81.  
  82. (* Andere bekannte Cookies *)
  83.  
  84. CONST   Overscan =      'OVER'; (* Autoswitch-Overscan von K.Isakovic *)
  85.         TOS14Fix =      'TFIX'; (* Tos14Fix *)
  86.         VDIFix =        'VFIX'; (* VDIFix-Progamm von K.Isakovic *)
  87.         ReflexCard =    'RFLX'; (* Treiber der Reflex-Karte von OverScan GbR *)
  88.         NVDI =          'NVDI'; (* NVDI von Bela *)
  89.         BigScreen2 =    'BIGS'; (* Grožbildschirmsimulator von Julian Reschke *)
  90.         VirtualScreen = 'VSCR'; (* Zeiger auf Infostruktur von Bigscreen2 *)
  91.         Gemini =        'GMNI'; (* GEMINI, der Shareware-Desktop *)
  92.         Mupfel =        'MUPF'; (* MUPFEL von Gereon Steffens *)
  93.         MakeJar =       'MkJr'; (* MakeCookiejar von Thomas Schallar *)
  94.         TTTF =          'TTTF'; (* ThirtyTwoToTwentyFour von Marcel Waldvogel *)
  95.         FileSelector =  'FSEL'; (* Extended Fileselector z.B. Patzelbox *)
  96.         LetemFly =      'LTMF'; (* Let'em Fly von Oliver Scheel *)
  97.  
  98. (* Zum Zerlegen des Cookiewertes ohne grože Umst„nde *)
  99. TYPE    Anytype =  RECORD
  100.                     CASE : CARDINAL OF
  101.                      0: long:   lWORD;|
  102.                      1: hi, lo: sWORD;|
  103.                      2: b4, b3, b2, b1: BYTE;|
  104.                     END;
  105.                    END;
  106.  
  107. PROCEDURE FindCookie (cookie: ARRAY OF CHAR; VAR value: lWORD): BOOLEAN;
  108. (* Liefert TRUE, wenn der bergebene Cookie gefunden wird. Liefert
  109.  * dann in value den dazugeh”rigen Longword-Wert, bei FALSE ist
  110.  * value immer Null.
  111.  *)
  112.  
  113. PROCEDURE ModifyCookie (cookie: ARRAY OF CHAR; value: lWORD): BOOLEAN;
  114. (* Sucht den Cookie und liefert FALSE, wenn er nicht vorhanden ist.
  115.  * Wird er gefunden, wird value als neuer Cookie-Wert eingesetzt und
  116.  * die Funktion liefert TRUE.
  117.  *)
  118.  
  119.  
  120. TYPE  Listmode = (first, next);
  121.  
  122. PROCEDURE ListCookies (flag: Listmode; VAR id: ARRAY OF CHAR; VAR value: lWORD): BOOLEAN;
  123. (* Geht die Liste aller Cookies durch. (Einmal mit first, dann mit next
  124.  * aufrufen). Solange die Prozedur TRUE liefert, sind Cookies gefunden
  125.  * worden. Bei FALSE sind id und value undefiniert!
  126.  *)
  127.  
  128. END MagicCookie.
  129.